#include"getch.h"
#include<termios.h>
#include<unistd.h>
#include<stdio.h>

int getch (void)
{
	//获取现在的终端输入配置方案
	  struct termios old;
      int ret = tcgetattr(STDIN_FILENO,&old);
	  if(0 > ret)
	  {
                 perror("tcgetatter");
				 return -1;
	  }

	//新建一套终端配置方案（不用回车确认\不回显）
       struct termios new =old;
	   new.c_lflag &= ~(ECHO|ICANON);

    //设置新的终端配置方案
        ret = tcsetattr(STDIN_FILENO,TCSANOW,&new);
		if( 0> ret)
		{
                   perror("tcsetattr");
				   return -2;
		}
	//使用新的配置方案从终端获取数据
          int key_val = 0;
		  do{
			  key_val += getchar();
			 } while(stdin->_IO_read_end -
				     stdin->_IO_read_ptr);

	//还原终端配置方案
             ret = tcsetattr(STDIN_FILENO,TCSANOW,&old);
			 if(0 > ret)
			 {
               perror("tcsetattr");
			   return -3;
			 }
	//返回获取的数据
        return key_val;
}
